package com.yanjr.modules.sys.dao;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.yanjr.common.persistence.BaseDao;
import com.yanjr.modules.sys.entity.Menu;
import com.yanjr.modules.sys.entity.Office;
import com.yanjr.modules.sys.entity.Role;

/**
 * @ClassName: RoleDao 
 * @Description: 角色DAO接口
 * @author yanjr big123@126.com 
 * @date 2016年3月8日 下午2:33:32
 */
@Repository
public interface RoleDao extends BaseDao<Role> {

	/**
	 * @Description 通过名称查询角色
	 * @param name
	 * @return Role
	 * @date 2016年3月8日下午2:33:56
	 * @author yanjr big123@126.com
	 */
	public Role findByName(String name);

	/**
	 * 获得所有可用、未删除的角色
	 * 
	 * @return List<Role>
	 * @author yanjr
	 */
	public List<Role> findAllList();
	
	/**
	 * Get the list of Role by userId
	 * 
	 * @param userId
	 * @return
	 * @author yanjr
	 */
	public List<Role> findByUserId(String userId);
	
	/**
	 * batch update role_menu
	 * 
	 * @param roleId
	 * @param list
	 * @return
	 * @author yanjr
	 */
	public void batchUpdateRoleAndMenu(String roleId, List<Menu> list);
	
	/**
	 * batch update role_office
	 * 
	 * @param String roleId
	 * @param List<Office> list
	 * @author yanjr
	 */
	public void batchUpdateRoleAndOffice(String roleId, List<Office> list);
	
	/**
	 * Delete sys_user_role by roleId and userId
	 * 
	 * @param roleId
	 * @param userId
	 * @return
	 * @author yanjr
	 */
	public int deleteRoleAndUser(String roleId, String userId);
	
	/**
	 * Add sys_user_role by roleId and userId
	 * 
	 * @param roleId
	 * @param userId
	 * @return
	 * @author yanjr
	 */
	public int addRoleAndUser(String roleId, String userId);

}
